// 报告生成模块

class ReportGenerator {
    constructor() {
        this.reportTemplates = {
            daily: {
                title: '日报',
                template: `
# {date} 日报

## 个人信息
- 姓名: {name}
- 部门: {department}
- 职位: {position}

## 工位状态
- 今日状态: {status}

## 今日工作内容
{tasks}

## 明日计划
{plans}

## 遇到的问题
{issues}

## 备注
{notes}
`
            },
            weekly: {
                title: '周报',
                template: `
# {startDate} 至 {endDate} 周报

## 个人信息
- 姓名: {name}
- 部门: {department}
- 职位: {position}

## 本周工作概述
{summary}

## 详细工作内容
{tasks}

## 下周计划
{plans}

## 遇到的问题及解决方案
{issues}

## 需要协助的事项
{assistance}

## 备注
{notes}
`
            },
            monthly: {
                title: '月报',
                template: `
# {month} 月报

## 个人信息
- 姓名: {name}
- 部门: {department}
- 职位: {position}

## 本月工作概述
{summary}

## 主要工作成果
{achievements}

## 详细工作内容
{tasks}

## 下月计划
{plans}

## 遇到的问题及解决方案
{issues}

## 需要协助的事项
{assistance}

## 备注
{notes}
`
            }
        };
    }
    
    // 生成日报
    generateDailyReport(data) {
        const template = this.reportTemplates.daily.template;
        const reportData = {
            date: data.date || new Date().toLocaleDateString('zh-CN'),
            name: data.name || '未填写',
            department: data.department || '未填写',
            position: data.position || '未填写',
            status: data.status || '未填写',
            tasks: data.tasks || '无',
            plans: data.plans || '无',
            issues: data.issues || '无',
            notes: data.notes || '无'
        };
        
        return this.fillTemplate(template, reportData);
    }
    
    // 生成周报
    generateWeeklyReport(data) {
        const template = this.reportTemplates.weekly.template;
        const today = new Date();
        const startDate = new Date(today);
        startDate.setDate(today.getDate() - 7);
        
        const reportData = {
            startDate: data.startDate || startDate.toLocaleDateString('zh-CN'),
            endDate: data.endDate || today.toLocaleDateString('zh-CN'),
            name: data.name || '未填写',
            department: data.department || '未填写',
            position: data.position || '未填写',
            summary: data.summary || '无',
            tasks: data.tasks || '无',
            plans: data.plans || '无',
            issues: data.issues || '无',
            assistance: data.assistance || '无',
            notes: data.notes || '无'
        };
        
        return this.fillTemplate(template, reportData);
    }
    
    // 生成月报
    generateMonthlyReport(data) {
        const template = this.reportTemplates.monthly.template;
        const today = new Date();
        const month = data.month || `${today.getFullYear()}年${today.getMonth() + 1}月`;
        
        const reportData = {
            month: month,
            name: data.name || '未填写',
            department: data.department || '未填写',
            position: data.position || '未填写',
            summary: data.summary || '无',
            achievements: data.achievements || '无',
            tasks: data.tasks || '无',
            plans: data.plans || '无',
            issues: data.issues || '无',
            assistance: data.assistance || '无',
            notes: data.notes || '无'
        };
        
        return this.fillTemplate(template, reportData);
    }
    
    // 填充模板
    fillTemplate(template, data) {
        let result = template;
        for (const key in data) {
            const regex = new RegExp(`{${key}}`, 'g');
            result = result.replace(regex, data[key]);
        }
        return result;
    }
    
    // 生成任务列表文本
    generateTasksText(tasks) {
        if (!tasks || tasks.length === 0) {
            return '无任务';
        }
        
        return tasks.map((task, index) => {
            const statusText = {
                'pending': '待办',
                'in-progress': '进行中',
                'completed': '已完成'
            };
            
            const priorityText = {
                'low': '低',
                'medium': '中',
                'high': '高'
            };
            
            // 添加工时信息
            const hoursText = task.hours && task.hours > 0 ? `[工时: ${task.hours}小时]` : '';
            
            return `${index + 1}. ${task.title} [${statusText[task.status]}] [优先级: ${priorityText[task.priority]}] ${hoursText}`;
        }).join('\n');
    }
    
    // 生成截图
    async generateScreenshot() {
        // 这里可以实现截图功能
        // 在Electron中可以使用desktopCapturer API
        throw new Error('截图功能待实现');
    }
    
    // 导出为文本文件
    exportAsText(content, filename) {
        const blob = new Blob([content], { type: 'text/plain;charset=utf-8' });
        this.downloadBlob(blob, filename);
    }
    
    // 导出为Markdown文件
    exportAsMarkdown(content, filename) {
        const blob = new Blob([content], { type: 'text/markdown;charset=utf-8' });
        this.downloadBlob(blob, filename);
    }
    
    // 下载Blob
    downloadBlob(blob, filename) {
        const url = URL.createObjectURL(blob);
        const a = document.createElement('a');
        a.href = url;
        a.download = filename;
        document.body.appendChild(a);
        a.click();
        document.body.removeChild(a);
        URL.revokeObjectURL(url);
    }
}

// 导出单例实例
const reportGenerator = new ReportGenerator();
module.exports = reportGenerator;